<!DOCTYPE html public "?">
<html lang="zh" itemscope="itemscope" itemtype="http://schema.org/WebPage" xmlns:html5="http://www.w3.org/html5">
<head>
	<meta charset="utf-8"/>
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="renderer" content="webkit">
	<title>前端攻城狮的玩具盒子</title>
	<link rel="dns-prefetch" href="//1.kainy.sinaapp.com"/>
	<meta content="width=320, initial-scale=1.0, maximum-scale=3.0, user-scalable=1" name="viewport"/>
	<meta content="#0FF" name="msapplication-TileColor"/>
	<meta content="前端工程师 ☆ 郭涛的个人主页,Kainy Guo's personal page,front-end developer,front-end engineer,frontender,fronteer,F2E" itemprop="keywords" name="keywords" property="og:keywords"/>
	<meta content="郭涛(Kainy Guo)，前端工程师 | 3年经验 | 助理工程师 | 本科理学士 | SAE（新浪云计算）高级开发者 | 现居福州 | 电子邮箱：gt@kainy.cn" itemprop="description" name="description" property="og:description"/>
	<meta content="KainyGuo" name="author" />
	<meta content="20131008" name="version"/>
	
	<meta content="KainyGuo" name="cn"/>
	<meta content="郭涛" name="uid"/>
	<meta content="前端开发工程师" name="title"/>
	<meta content="G6" name="location"/>
	<meta content="yes" name="apple-mobile-web-app-capable">
	<meta content="//1.kainy.sinaapp.com/img/kainy.jpg" name="msapplication-TileImage" itemprop="image" property="og:image"/>
	
	<link rel="shortcut icon" sizes="196x196" href="//1.kainy.sinaapp.com/favicon.ico" type="image/x-icon" />
	<link rel="stylesheet" href="//1.kainy.sinaapp.com/fontello/css/fontello-embedded.css">
	<link rel="stylesheet" href="//1.kainy.sinaapp.com/fontello/css/animation.css">
	<link rel="prerender" href="http://blog.kainy.cn/">
	<!--[if IE 7]><link rel="stylesheet" href="//1.kainy.sinaapp.com/fontello/css/fontello-ie7.css"><![endif]-->
	<!--[if lt IE 7]><script type="text/javascript" src="http://www.cornify.com/js/cornifie.js"></script><![endif]-->
	<base target="_blank" />
	<style>
	html, body{
		height: 100%;
		margin: 0;
		-ms-touch-action: double-tap-zoom;
	}
	::selection {
		background: #0090d2;
		color: #fff;
	}
	html5\:nav{
		display: block;
	}
	.snow{
		position: fixed;
		-webkit-transform: translateZ(0);
		z-index: -9;
		color: #f2f2f2;
		-webkit-animation-duration: 6s;
		-webkit-animation-iteration-count: infinite;
		-webkit-animation-direction: alternate;
	}
	@-webkit-keyframes slidein {
		from {
			margin-left:-60%;
		}
		50% {
			font-size:800%;
		}
		to {
			margin-left:50%;
		}
	}
	a:link,
	a:visited{
		color: #ccc;
		text-decoration: none;
		border-bottom: dotted 1px;
	}
	a:hover{
		color: #fff;
		background: cyan;
		text-decoration: none;
	}
	a:active{
		opacity: .4;
		position: relative;
		top: 2px;
	}
	.wrap{
		padding-top: 20%;
		text-align: center;
	}
	#J-qr{
		height: 205px;
	}
	.links{
		font: .9em "Microsoft YaHei", 微软雅黑, "Microsoft JhengHei", 华文细黑, STHeiti, MingLiu;
		padding: 5px;
		position: relative;
		z-index: 9999;
	}
	.links a{
		padding: 1px 4px;
	}
	.特色{
		color: #d3d3d3;
	}
	.qrcode {
		margin: 0 auto;
		max-width: 205px;
		-webkit-transition: -webkit-mask-position 1.5s linear;
		-webkit-mask-size: 205px 205px;
		-webkit-mask-image: -webkit-gradient(linear, left top, right top, color-stop(0.00, rgba(0,0,0,1)), color-stop(0.90, rgba(0,0,0,1)), color-stop(1.00, rgba(0,0,0,0)));
		-webkit-mask-position-x: 0px;
	}
	.pic{
		width: 0px;
		-webkit-transition-duration: 1s;
	}
	</style>
</head>
<body>
	<div class="wrap">
		<div id="J-qr">
		</div>
		<html5:nav class="links">
			<a href="http://weibo.com/Kainy">Weibo</a>
			<a href="http://blog.Kainy.CN/">&nbsp;博&nbsp;&nbsp;&nbsp;&nbsp;客&nbsp;</a>
			<a href="//github.com/Kainy">Github</a>
		</html5:nav>
		<audio autoplay>
			<source src="//1.kainy.sinaapp.com/img/H.ogg" type="audio/ogg"/>
			<source src="http://www.czsjxx.net/sourcefile/0/0/6/6081.mp3" type="audio/mpeg"/>
			<source src="//developer.cdn.mozilla.net/media/uploads/demos/d/r/dragongraphics/0bca6526258ac28e1e900882bc11d333/media-query-mario_1351726916_demo_package/soundboard/smb3-world-map.mp3" type="audio/mpeg"/>
		</audio>
		<small class="特色" title="仰望星空">闽ICP备10011360号-3。</small>
	</div>

<script>
	(function(){/*
	 MIT License (c) copyright 2010-2013 B Cavalier & J Hann */
	(function(l){function r(){}function u(a,b){return 0==S.call(a).indexOf("[object "+b)}function v(a){return a&&"/"==a.charAt(a.length-1)?a.substr(0,a.length-1):a}function G(a,b){var d,c,f,g;d=1;c=a;"."==c.charAt(0)&&(f=!0,c=c.replace(T,function(a,b,c,f){c&&d++;return f||""}));if(f){f=b.split("/");g=f.length-d;if(0>g)return a;f.splice(g,d);return f.concat(c||[]).join("/")}return c}function A(a){var b=a.indexOf("!");return{g:a.substr(b+1),h:0<=b&&a.substr(0,b)}}function E(){}function q(a,b){E.prototype=
	a||N;var d=new E;E.prototype=N;for(var c in b)d[c]=b[c];return d}function B(){function a(a,b,d){c.push([a,b,d])}function b(a,b){for(var d,f=0;d=c[f++];)(d=d[a])&&d(b)}var d,c,f;d=this;c=[];f=function(d,k){a=d?function(a){a&&a(k)}:function(a,b){b&&b(k)};f=r;b(d?0:1,k);b=r;c=w};this.i=function(b,c,f){a(b,c,f);return d};this.f=function(a){d.B=a;f(!0,a)};this.d=function(a){d.oa=a;f(!1,a)};this.v=function(a){b(2,a)}}function C(a){return a instanceof B||a instanceof h}function x(a,b,d,c){C(a)?a.i(b,d,c):
	b(a)}function y(a,b,d){var c;return function(){0<=--a&&b&&(c=b.apply(w,arguments));0==a&&d&&d(c);return c}}function e(){var a,b;a=[].slice.call(arguments);u(a[0],"Object")&&(b=a.shift(),b=s(b));return new h(a[0],a[1],a[2],b)}function s(a,b,d){var c,f,g;if(a&&(m.R(a),n=m.b(a),"preloads"in a&&(c=new h(a.preloads,w,d,H,!0),m.N(function(){H=c})),g=(g=a.main)&&String(g).split(U)))return f=new B,f.i(b,d),a=g[1]?function(){new h([g[1]],f.f,f.d)}:f.d,new h([g[0]],f.f,a),f}function h(a,b,d,c,f){var g;g=m.j(n,
	w,[].concat(a),f);this.then=this.i=a=function(a,b){x(g,function(b){a&&a.apply(w,b)},function(a){if(b)b(a);else throw a;});return this};this.next=function(a,b,c){return new h(a,b,c,g)};this.config=s;(b||d)&&a(b,d);m.N(function(){x(f||H,function(){x(c,function(){m.r(g)},d)})})}function K(a){var b,d;b=a.id;b==w&&(I!==w?I={H:"Multiple anonymous defines encountered"}:(b=m.ca())||(I=a));if(b!=w){d=t[b];b in t||(d=m.m(b,n),d=m.D(d.b,b),t[b]=d);if(!C(d))throw Error("duplicate define: "+b);d.ga=!1;m.F(d,a)}}
	function F(){var a=m.$(arguments);K(a)}var n,p,J,D=l.document,z=D&&(D.head||D.getElementsByTagName("head")[0]),V=z&&z.getElementsByTagName("base")[0]||null,P={},Q={},L={},W="addEventListener"in l?{}:{loaded:1,complete:1},N={},S=N.toString,w,t={},M={},H=!1,I,R=/^\/|^[^:]+:\/\//,T=/(\.)(\.?)(?:$|\/([^\.\/]+.*)?)/g,X=/\/\*[\s\S]*?\*\/|\/\/.*?[\n\r]/g,Y=/require\s*\(\s*(["'])(.*?[^\\])\1\s*\)|[^\\]?(["'])/g,U=/\s*,\s*/,O,m;m={n:function(a,b,d){var c;a=G(a,b);if("."==a.charAt(0))return a;c=A(a);a=(b=c.h)||
	c.g;a in d.c&&(a=d.c[a].l||a);b&&(0>b.indexOf("/")&&!(b in d.c)&&(a=v(d.P)+"/"+b),a=a+"!"+c.g);return a},j:function(a,b,d,c){function f(b,c){var d,g;d=m.n(b,k.id,a);if(!c)return d;g=A(d);if(!g.h)return d;d=t[g.h];g.g="normalize"in d?d.normalize(g.g,f,k.b)||"":f(g.g);return g.h+"!"+g.g}function g(b,d,g){var e;e=d&&function(a){d.apply(w,a)};if(u(b,"String")){if(e)throw Error("require(id, callback) not allowed");g=f(b,!0);b=t[g];if(!(g in t))throw Error("Module not resolved: "+g);return(g=C(b)&&b.a)||
	b}x(m.r(m.j(a,k.id,b,c)),e,g)}var k;k=new B;k.id=b||"";k.da=c;k.G=d;k.b=a;k.w=g;g.toUrl=function(b){return m.m(f(b,!0),a).url};k.n=f;return k},D:function(a,b,d){var c,f,g;c=m.j(a,b,w,d);f=c.f;g=y(1,function(a){c.q=a;try{return m.U(c)}catch(b){c.d(b)}});c.f=function(a){x(d||H,function(){f(t[c.id]=M[c.url]=g(a))})};c.I=function(a){x(d||H,function(){c.a&&(g(a),c.v(Q))})};return c},T:function(a,b,d,c){return m.j(a,d,w,c)},ba:function(a){return a.w},J:function(a){return a.a||(a.a={})},aa:function(a){var b=
	a.s;b||(b=a.s={id:a.id,uri:m.K(a),exports:m.J(a),config:function(){return a.b}},b.a=b.exports);return b},K:function(a){return a.url||(a.url=m.C(a.w.toUrl(a.id),a.b))},R:function(a){var b,d,c,f,g;b="curl";d="define";c=f=l;if(a&&(g=a.overwriteApi||a.ma,b=a.apiName||a.ia||b,c=a.apiContext||a.ha||c,d=a.defineName||a.ka||d,f=a.defineContext||a.ja||f,p&&u(p,"Function")&&(l.curl=p),p=null,J&&u(J,"Function")&&(l.define=J),J=null,!g)){if(c[b]&&c[b]!=e)throw Error(b+" already exists");if(f[d]&&f[d]!=F)throw Error(d+
	" already exists");}c[b]=e;f[d]=F},b:function(a){function b(a,b){var d,c,k,e,n;for(n in a){k=a[n];u(k,"String")&&(k={path:a[n]});k.name=k.name||n;e=f;c=A(v(k.name));d=c.g;if(c=c.h)e=g[c],e||(e=g[c]=q(f),e.c=q(f.c),e.e=[]),delete a[n];if(b){c=k;var h=void 0;c.path=v(c.path||c.location||"");h=c.main||"./main";"."==h.charAt(0)||(h="./"+h);c.l=G(h,c.name+"/");c.b=c.config;c.b&&(c.b=q(f,c.b))}else c={path:v(k.path)};c.S=d.split("/").length;d?(e.c[d]=c,e.e.push(d)):e.o=m.Q(k.path,f)}}function d(a){var b=
	a.c;a.O=RegExp("^("+a.e.sort(function(a,c){return b[c].S-b[a].S}).join("|").replace(/\/|\./g,"\\$&")+")(?=\\/|$)");delete a.e}var c,f,g,k;"baseUrl"in a&&(a.o=a.baseUrl);"main"in a&&(a.l=a.main);"preloads"in a&&(a.na=a.preloads);"pluginPath"in a&&(a.P=a.pluginPath);if("dontAddFileExt"in a||a.k)a.k=RegExp(a.dontAddFileExt||a.k);c=n;f=q(c,a);f.c=q(c.c);g=a.plugins||{};f.plugins=q(c.plugins);f.u=q(c.u,a.u);f.t=q(c.t,a.t);f.e=[];b(a.packages,!0);b(a.paths,!1);for(k in g)a=m.n(k+"!","",f),f.plugins[a.substr(0,
	a.length-1)]=g[k];g=f.plugins;for(k in g)if(g[k]=q(f,g[k]),a=g[k].e)g[k].e=a.concat(f.e),d(g[k]);for(k in c.c)f.c.hasOwnProperty(k)||f.e.push(k);d(f);return f},m:function(a,b){var d,c,f,g;d=b.c;f=R.test(a)?a:a.replace(b.O,function(a){c=d[a]||{};g=c.b;return c.path||""});return{b:g||n,url:m.Q(f,b)}},Q:function(a,b){var d=b.o;return d&&!R.test(a)?v(d)+"/"+a:a},C:function(a,b){return a+((b||n).k.test(a)?"":".js")},L:function(a,b,d){var c=D.createElement("script");c.onload=c.onreadystatechange=function(d){d=
	d||l.event;if("load"==d.type||W[c.readyState])delete L[a.id],c.onload=c.onreadystatechange=c.onerror="",b()};c.onerror=function(){d(Error("Syntax or http error: "+a.url))};c.type=a.M||"text/javascript";c.charset="utf-8";c.async=!a.ea;c.src=a.url;L[a.id]=c;z.insertBefore(c,V);return c},V:function(a){var b=[],d;("string"==typeof a?a:a.toSource?a.toSource():a.toString()).replace(X,"").replace(Y,function(a,f,g,k){k?d=d==k?w:d:d||b.push(g);return""});return b},$:function(a){var b,d,c,f,g,k;g=a.length;
	c=a[g-1];f=u(c,"Function")?c.length:-1;2==g?u(a[0],"Array")?d=a[0]:b=a[0]:3==g&&(b=a[0],d=a[1]);!d&&0<f&&(k=!0,d=["require","exports","module"].slice(0,f).concat(m.V(c)));return{id:b,q:d||[],A:0<=f?c:function(){return c},p:k}},U:function(a){var b;b=a.A.apply(a.p?a.a:w,a.q);b===w&&a.a&&(b=a.s?a.a=a.s.a:a.a);return b},F:function(a,b){a.A=b.A;a.p=b.p;a.G=b.q;m.r(a)},r:function(a){function b(a,b,c){k[b]=a;c&&h(a,b)}function d(b,c){var d,f,g,e;d=y(1,function(a){f(a);p(a,c)});f=y(1,function(a){h(a,c)});
	g=m.X(b,a);(e=C(g)&&g.a)&&f(e);x(g,d,a.d,a.a&&function(a){g.a&&(a==P?f(g.a):a==Q&&d(g.a))})}function c(){a.f(k)}var f,g,k,e,n,h,p;k=[];g=a.G;e=g.length;0==g.length&&c();h=y(e,b,function(){a.I&&a.I(k)});p=y(e,b,c);for(f=0;f<e;f++)n=g[f],n in O?(p(O[n](a),f,!0),a.a&&a.v(P)):n?d(n,f):p(w,f,!0);return a},Y:function(a){m.K(a);m.L(a,function(){var b=I;I=w;!1!==a.ga&&(!b||b.H?a.d(Error(b&&b.H||"define() missing or duplicated: "+a.url)):m.F(a,b))},a.d);return a},X:function(a,b){var d,c,f,g,e,h,p,s,l,q,r;
	d=b.n;c=b.da;f=b.b||n;e=d(a);e in t||(g=A(e),p=g.g,e=g.h||p,s=m.m(e,f));if(g)if(g.h)h=e;else if(h=s.b.moduleLoader||s.b.la)p=e,e=h,s=m.m(h,f);e in t?l=t[e]:s.url in M?l=t[e]=M[s.url]:(l=m.D(s.b,e,c),l.url=m.C(s.url,s.b),t[e]=M[s.url]=l,m.Y(l));e==h&&(q=new B,r=f.plugins[h]||f,x(l,function(a){var b,f,e;e=a.dynamic;p="normalize"in a?a.normalize(p,d,l.b)||"":d(p);f=h+"!"+p;b=t[f];if(!(f in t)){b=m.T(r,f,p,c);e||(t[f]=b);var g=function(a){e||(t[f]=a);b.f(a)};g.resolve=g;g.reject=g.error=b.d;a.load(p,
	b.w,g,r)}q!=b&&x(b,q.f,q.d,q.v)},q.d));return q||l},ca:function(){var a;if(!u(l.opera,"Opera"))for(var b in L)if("interactive"==L[b].readyState){a=b;break}return a},Z:function(a){var b=0,d,c;for(d=D&&(D.scripts||D.getElementsByTagName("script"));d&&(c=d[b++]);)if(a(c))return c},W:function(a){var b;(b=m.Z(function(b){if(b=b.getAttribute("data-curl-run"))a.l=b;return b}))&&b.setAttribute("data-curl-run","");return a},N:function(a){setTimeout(a,0)}};O={require:m.ba,exports:m.J,module:m.aa};e.version=
	"0.7.5";e.config=s;F.amd={plugins:!0,jQuery:!0,curl:"0.7.5"};n={o:"",P:"curl/plugin",k:/\?|\.js\b/,u:{},t:{},plugins:{},c:{},O:/$^/};n=m.W(n);p=l.curl;J=l.define;p&&u(p,"Object")||n.l?(l.curl=w,s(p||n)):m.R();t.curl=e;t["curl/_privileged"]={core:m,cache:t,config:function(){return n},_define:K,_curl:e,Promise:B}})(this.window||"undefined"!=typeof global&&global||this);
	(function(l,r){function u(){if(!r.body)return!1;F||(F=r.createTextNode(""));try{return r.body.removeChild(r.body.appendChild(F)),F=K,!0}catch(e){return!1}}function v(){var n;n=E[r[A]]&&u();if(!C&&n){C=!0;for(clearTimeout(h);e=s.pop();)e();B&&(r[A]="complete");for(var p;p=q.shift();)p()}return n}function G(){v();C||(h=setTimeout(G,x))}var A="readyState",E={loaded:1,interactive:1,complete:1},q=[],B=r&&"string"!=typeof r[A],C=!1,x=10,y,e,s=[],h,K,F;y="addEventListener"in l?function(e,h){e.addEventListener(h,
	v,!1);return function(){e.removeEventListener(h,v,!1)}}:function(e,h){e.attachEvent("on"+h,v);return function(){e.detachEvent(h,v)}};r&&!v()&&(s=[y(l,"load"),y(r,"readystatechange"),y(l,"DOMContentLoaded")],h=setTimeout(G,x));define("curl/domReady",function(){function e(h){C?h():q.push(h)}e.then=e;e.amd=!0;return e})})(this,this.document);
	(function(l,r,u){define("curl/plugin/js",["curl/_privileged"],function(l){function G(e){return e.lastIndexOf(".")<=e.lastIndexOf("/")?e+".js":e}function A(e,s,h){function q(){n||(r<new Date?h():setTimeout(q,10))}var r,n,p;r=(new Date).valueOf()+(e.fa||3E5);h&&e.a&&setTimeout(q,10);p=l.core.L(e,function(){n=!0;e.a&&(e.B=u(e.a));!e.a||e.B?s(p):h()},function(e){n=!0;h(e)})}function E(e,l){A(e,function(){var h=B.shift();y=0<B.length;h&&E.apply(null,h);l.f(e.B||!0)},function(e){l.d(e)})}var q={},B=[],
	C=r&&!0==r.createElement("script").async,x,y;x=l.Promise;return{dynamic:!0,normalize:function(e,l){var h=e.indexOf("!");return 0<=h?l(e.substr(0,h))+e.substr(h):l(e)},load:function(e,l,h,r){function u(e){(h.error||function(e){throw e;})(e)}var n,p,v,D,z;n=0<e.indexOf("!order");p=e.indexOf("!exports=");v=0<p&&e.substr(p+9);D="prefetch"in r?r.prefetch:!0;e=n||0<p?e.substr(0,e.indexOf("!")):e;z=G(l.toUrl(e));z in q?q[z]instanceof x?q[z].i(h,u):h(q[z]):(e={name:e,url:z,ea:n,a:v,fa:r.timeout},q[z]=l=new x,
	l.i(function(e){q[z]=e;h(e)},u),n&&!C&&y?(B.push([e,l]),D&&(e.M="text/cache",A(e,function(e){e&&e.parentNode.removeChild(e)},function(){}),e.M="")):(y=y||n,E(e,l)))},cramPlugin:"../cram/js"}})})(this,this.document,function(l){try{return eval(l)}catch(r){}});define("curl/plugin/domReady",["../domReady"],function(l){return{load:function(r,u,v){l(v)}}});
	}).call(this);
	
	var elQr= document.getElementById('J-qr');
	var dest= location.host.match(/^loc/i)
		? '/js/'
		: 'http://1.kainy.sinaapp.com/js/';
	curl({
		baseUrl: '/',
		paths: {
			'modules': 'js/_modules/',
			'hover': dest+ 'kainy.cn/hover',
			'touch': dest+ 'kainy.cn/touch'
		}
	});
	if('ontouchstart' in window || navigator.msMaxTouchPoints){
	//('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch
		curl(['touch']);
	}else{
		curl(['hover']);
	}
	curl([
		'js!http://1.kainy.sinaapp.com/js/common.js'
	]);
</script>
</body>
</html>